package com.br.sae.controls;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.br.sae.conexaobd.SistemaDAO;
import com.br.sae.model.dao.AdministradorBD;
import com.br.sae.model.dao.UsuarioBD;
import com.br.sae.model.entitys.Administrador;
import com.br.sae.model.entitys.Usuario;

public class LogicaAdministradorCrud implements Logica{

	@Override
	public String executa(HttpServletRequest req, HttpServletResponse res)
			throws Exception {
		String metodo = req.getParameter("Metodo");
		
		
		if(metodo.equals("inserirAdministrador")){
			String nome = req.getParameter("nome");
			String sexo = req.getParameter("sexo");
			String rua = req.getParameter("rua");
			String numero_S = req.getParameter("numero");
			int numero =0;
			if(!numero_S.equals("")){
				numero = Integer.valueOf(numero_S);
			}
			String bairro = req.getParameter("bairro");
			String cidade = req.getParameter("cidade");
			String email = req.getParameter("email");
			String cep = req.getParameter("cep");
			String estado = req.getParameter("estado");
			String dataNascimentoAdministrador = req.getParameter("dataNascimento");
			String telefone = req.getParameter("telefone");
			String login = req.getParameter("login");
			String senha = req.getParameter("senha");
			
			Administrador administrador = new Administrador(nome, dataNascimentoAdministrador, sexo, rua, numero, bairro, cidade, cep, estado, email, telefone);
			Usuario usuario = new Usuario(login,senha,"Administrador");
			inserirAdministrador(administrador,usuario);
			
			return "/mvc?logica=LogicaFormAdministradores";
		}else if(metodo.equals("alterarAdministrador")){
			String nome = req.getParameter("nome");
			String sexo = req.getParameter("sexo");
			String rua = req.getParameter("rua");
			String numero_S = req.getParameter("numero");
			int numero =0;
			if(!numero_S.equals("")){
				numero = Integer.valueOf(numero_S);
			}
			String cep = req.getParameter("cep");
			String estado = req.getParameter("estado");
			String bairro = req.getParameter("bairro");
			String cidade = req.getParameter("cidade");
			String email = req.getParameter("email");
			String dataNascimentoAdministrador = req.getParameter("dataNascimento");
			String telefone = req.getParameter("telefone");
			String login = req.getParameter("login");
			String senha = req.getParameter("senha");
			
			Administrador administrador = new Administrador(nome, dataNascimentoAdministrador, sexo, rua, numero, bairro, cidade, cep, estado, email, telefone);
			
			administrador.setId(Integer.valueOf(req.getParameter("id")));
			alterarAdministrador(administrador, login, senha);
			return "/mvc?logica=LogicaFormAdministradores";
		}else{
			excluirAdministrador(Integer.valueOf(req.getParameter("id")));
			return "/mvc?logica=LogicaFormAdministradores";
		}

	}

	private void inserirAdministrador(Administrador administrador, Usuario usuario){
		AdministradorBD administradorBD = new AdministradorBD();
		administradorBD.incluirAdministrador(administrador);
		
		UsuarioBD usuarioBD = new UsuarioBD();
		usuario.setId_perfil(administrador.getId());
		usuarioBD.incluirUsuario(usuario);
	}

	private void alterarAdministrador(Administrador administrador, String login, String senha){
		AdministradorBD administradorBD = new AdministradorBD();
		administradorBD.alterarAdministrador(administrador);
		
		UsuarioBD usuarioBD = new UsuarioBD();
		Usuario usu = usuarioBD.consultaUsuario(administrador.getId(), "Administrador");
		usu.setLogin(login);
		usu.setSenha(senha);
		usuarioBD.alterarUsuario(usu);
	}

	private void excluirAdministrador(int id){
		AdministradorBD administradorBD = new AdministradorBD();
		SistemaDAO sis = new SistemaDAO();
		Administrador administrador = (Administrador) sis.find(Administrador.class, id);
		UsuarioBD usuarioBD = new UsuarioBD();
		Usuario usu = usuarioBD.consultaUsuario(administrador.getId(), "Administrador");
		usuarioBD.removerUsuario(usu);
		administradorBD.removerAdministrador(administrador);
	}
	
}
